As a conventional data transformation method for encryption, "FEAL-8 Algorithm" (Fast data Encipherment Algorithm-8) is disclosed by Miyaguchi et al. (Miyaguchi, Shiraishi, and Shimizu, "FEAL-8 Encipherment Algorithm" NTT Practical Research Report vol. 39, No. 4/5, 1988).
FIG. 29 is a partial diagram of the above "FEAL-8" encipherment algorithm.
In the figure, 1001 and 1002 denote input data of two sequences, 1003 and 1004 denote output data of two sequences, and 1005, 1006, 1007 and 1008 denote intermediate data. 1011, 1012, 1013 and 1014 respectively show a first key parameter, a second key parameter, a third key parameter and a fourth key parameter. Each of 1021, 1022, 1023 and 1024 shows sub-transformation unit of each transforming stage. Each sub-transformation unit includes each of nonlinear transformers 1031, 1032, 1033, 1034 and each of XOR (exclusive OR) circuits 1041, 1042, 1043, 1044.
An operation will be explained hereinafter. The input data 1001 and 1002 of two sequences are received at the sub-transformation unit 1021 of a first stage to be transformed into new data, that is, the intermediate data 1005 and 1006 of two sequences. The intermediate data is input to the sub-transformation unit 1022 of a second stage to be transformed into new data, that is, the intermediate data 1007 and 1008. The above operation is repeated eight times in total, and the output data 1003 and 1004 of two sequences are output as the last transformation result from the sub-transformation unit of an eighth stage.
An operation of the sub-transformation unit 1021 of the first stage will be explained for one example of the above sub-transformation units.
The sub-transformation unit 1021 receives the input data 1001 and 1002 of two sequences and outputs the intermediate data 1005 and 1006 of two sequences. As described in detail in the above Practical Research Report, the second input data, that is, the input data 1002, is divided into byte by byte and the divided data is then XORed with the key parameter. Arithmetic addition is repeated to the data and the divided data is united again. This nonlinear transforming operation is performed in the nonlinear transformer 1031. The transformed data is XORed with the first input data 1001. The XORed result is output from the first stage as the second intermediate data 1006. On the other hand, the second input data 1002 is output as the first intermediate data 1005 without any transformation.
In the second sub-transformation unit 1022, data is processed as well as in the above procedure and the intermediate data of the second stage is obtained. In the same way, in this example, the processes of eight stages are performed in total. As the result, output data 1003 and 1004 are obtained.
The conventional data transformation apparatus is configured as described above. The transformed data is output only after the nonlinear transformation is completed in one stage of the sub-transformation unit, and is input to the sub-transformation unit of the next stage. Namely, each sub-transformation is performed sequentially and it takes time to perform an entire procedure.
The present invention is provided to solve the above problem. The object of the invention is to perform a plurality of sub-transformations in parallel to increase the processing speed of data transformation such as encryption, decryption and data diffusion.